package com.th.supcom.pds.impl.manager;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.RowBounds;

import com.th.supcom.pds.domain.pojo.PhamPropertyTable;
import com.th.supcom.pds.domain.vo.DrugInfoVO;

/**
 * PhamPropertyTable 管理接口.
 * 
 * 主要用于供药属性维护 .
 */
public interface PhamPropertyTableManager
{

    /** 公司版权信息. */
    public static final String copyright = "Copyright 2014, TH Supcom Corporation";

    /** 提交路径. */
    public static final String SCC_BRANCH = "$URL$";

    /** 提交日期. */
    public static final String SCC_LAST_MODIFICATION_DATE = "$Date$";

    /** 最终修改人员. */
    public static final String SCC_LAST_MODIFIER_NAME = "$Author$";

    /** 最终版本号. */
    public static final String SCC_REVISION = "$Revision$";

    /**
     * 插入序列号
     * 
     * @param String
     */
    public void addPhamAllocationTable (Long phamPropertySerialNo);

    /**
     * 通过VO对象插入记录.
     * 
     * @param phamPropertyTable 要插入的传输对象
     */
    public void addPhamPropertyTable (PhamPropertyTable phamPropertyTable);

    /**
     * 通过传输对象对应值查询表记录条数.
     * 
     * @param phamPropertyTable 传输对象.
     * @return 条数.
     */
    public int findPhamPropertyTableCountByExample (PhamPropertyTable phamPropertyTable);

    /**
     * 通过传输对象对应值查询表记录并且进行分页统计.
     * 
     * @param params Map入参对象.
     * @return Integer 查询结果总条数.
     */
    public Integer findPhamPropertyTableCountByMap (Map <String, Object> params);

    /**
     * 根据药名模糊查询的记录数
     * 
     * @param params
     * @return add by Zli
     */
    public Integer findPhamPropertyTableCountByName (Map <String, Object> params);

    /**
     * 根据药名模糊查询的记录数（用于药品属性维护）
     * 
     * @param params
     * @return add by Zli
     */
    public Integer searchPhamPropertyTableCountByName (Map <String, Object> params);

    /**
     * 通过传输对象对应值查询表记录.
     * 
     * @param phamPropertyTable 传输对象.
     * @return PhamPropertyTable 结果对象.
     */
    public List <PhamPropertyTable> findPhamPropertyTableListByExample (PhamPropertyTable phamPropertyTable);

    /**
     * 通过传输对象对应值查询表记录.
     * 
     * @param params Map入参对象.
     * @return PhamPropertyTable 结果对象集.
     */
    public List <PhamPropertyTable> findPhamPropertyTableListByMap (Map <String, Object> params);

    /**
     * 通过传输对象对应值查询表记录并且进行分页.
     * 
     * @param params Map入参对象.
     * @param offset 起始页.
     * @param limit 结束页.
     * @return PhamPropertyTable 结果对象集.
     */
    public List <DrugInfoVO> findPhamPropertyTableListWithPageByMap (Map <String, Object> params, Integer offset, Integer limit);

    /**
     * 根据药品名称进行模糊查询
     * 
     * @param rowBounds
     * @param params
     * @return add by Zli
     */
    public List <DrugInfoVO> findPhamPropertyTableListWithPageByName (RowBounds rowBounds, Map <String, Object> params);

    /**
     * 根据药品名称进行模糊查询（用于药品属性维护）
     * 
     * @param rowBounds
     * @param params
     * @return add by Zli
     */
    public List <DrugInfoVO> searchPhamPropertyTableListWithPageByName (RowBounds rowBounds, Map <String, Object> params);

    /**
     * 通过主键ID查询表记录.
     * 
     * @param id 主键ID
     * @return 返回PhamPropertyTable
     */
    public PhamPropertyTable getPhamPropertyTableByID (Long id);

    /**
     * 获得当前表的序列号.
     * 
     * @return Long 当前序列号.
     */
    public Long getPhamPropertyTableSeq ();

    /**
     * 通过主键ID更新表记录.
     * 
     * @param phamPropertyTable 要更新的传输对象
     * @return 返回更新条数
     */
    public int modifyPhamPropertyTable (PhamPropertyTable phamPropertyTable);

    /**
     * 通过主键ID更新表记录，字段有值才更新.
     * 
     * @param phamPropertyTable 更新的传输对象.
     * @return 更新条数.
     */
    public int modifyPhamPropertyTableByExample (PhamPropertyTable phamPropertyTable);

    /**
     * 通过主键ID删除表记录.
     * 
     * @param id 要删除的表的主键ID
     * @return 删除条数
     */
    public int removePhamPropertyTableByID (Long id);

    /**
     * 通过传入的Map参数删除表记录.
     * 
     * @param params 带条件的传入参数.
     * @return 删除条数.
     */
    public int removePhamPropertyTableByMap (Map <String, Object> params);
}